package Server.server.impl;

import Server.provider.ServiceProvider;
import Server.server.RpcServer;
import Server.server.work.WorkThread;

import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;

public class SimpleRPCServer implements RpcServer {

    // 本地注册中心
    private ServiceProvider serviceProvider;

    public SimpleRPCServer(ServiceProvider serviceProvider) {
        this.serviceProvider = serviceProvider;
    }

    @Override
    public void start(int port) {
        try {
            // 创建一个ServerSocket实例，在端口监听
            ServerSocket serverSocket = new ServerSocket(port);
            System.out.println("服务端启动");
            while (true){
                // 如果没有连接，会堵塞
                Socket socket = serverSocket.accept();
                // 如果有连接，则开启一个线程处理
                new Thread(new WorkThread(socket, serviceProvider)).start();
            }
        } catch (IOException e) {
            throw new RuntimeException(e);
        }
    }

    @Override
    public void stop() {
        // 停止服务器
        // 未来版本中优化服务端关闭的流程
    }
}
